package main

import (
	"os/exec"
	"auto/src/put_bot"
	"auto/src/set_config"
	"bytes"      // 新增
    "regexp"     // 用于正则表达式处理
	"github.com/axgle/mahonia"
	"fmt"
)

/* func checkUpdate() (bool, error) { // 检查数据库表是否有更新
	//...待连接数据库
} */



func main() {
	//直接读取配置文件
	var config *set_config.Config //指针类型用于引用值
	config = set_config.Load_Config(".")        //读取配置文件
	println("配置文件读取成功...")
	//println("RootPath:", config.Data.RootPath)
	// 检查数据库表是否更新
/* 	changed, err := checkUpdate()
	if err != nill {
		println("检查更新失败:", err.Error())
		return 
	}
	if !changed {
		println("数据库表无更新，程序退出")
		return
	} */
	// 数据库确定发生改变，生成新的excel 
	
	/* 测试python路径
			import (
			"bytes"
			"os/exec"
			)
			func main() {
				var out bytes.Buffer
				cmd := exec.Command("C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python312-32\\python.exe", "-c", "import sys; print(sys.executable)")
				cmd.Stdout = &out
				cmd.Stderr = &out
				cmd.Run()
				println("Go调用的Python路径:", out.String())
			}
	where python查看路径
	*/
	//生成新的excel和文字
	//本机python路径C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python312-32\\python.exe
	var out bytes.Buffer
	cmd := exec.Command("python", config.Data.Excel_Python) // 执行Python脚本
	cmd.Stdout = &out // 创建缓冲区获取输出
	cmd.Stderr = &out // 将错误输出也重定向到缓冲区
	if err := cmd.Run(); err != nil { 
		fmt.Printf("newGen erro:%s\r\n", err.Error())
		fmt.Printf("Python输出:%s\r\n", out.String()) // 新增，打印详细错误
		return
	}
	 // 将 GBK 编码转换为 UTF-8
    decoder := mahonia.NewDecoder("gbk")
    fullOutput := decoder.ConvertString(out.String())
	fmt.Printf("完整输出%s\r\n:", fullOutput)
	// 使用正则表达式匹配目标消息
	re := regexp.MustCompile(`@所有人.*?请各分公司进行高效整治`)
	message := re.FindString(fullOutput)
	if message != "" {
		fmt.Printf("提取的消息:%s\r\n", message)
		// 使用 match 进行后续处理
	} else {
		fmt.Printf("未找到目标消息\r\n")
	}
	fmt.Printf("正在准备图片...\r\n")
	// 生成图片 
	cmd = exec.Command("python", config.Data.Pic_Python,				
					"-p", config.Python.RootPath,
					"-f", config.Python.FileName,
					"-r", config.Python.Range)
	_ = cmd.Run()
	fmt.Printf("excel更新成功...\r\n")
	// 准备发送
	put_bot.Step(message,config.Data.FileName ,config) //传入参数需要发送的消息参数
}

